package com.wanxi;


public class MyArrayList {

    private int size = 0;//记录储存的个数
    private int[] array = new int[0];//初始化长度直接为0；
    private int length = 0;//记录该对象使用的数组的长度....如果初始化为0，似乎这个变量也不需要。。


    //这里的对象是数组形式存在，储存的是int型的值。添加的值也是type,添加成功1次，返回true,size个数+1。
    public boolean add(int type) {
        if (size < length) {//可以不要这个判断，size永远等于length
            array[size] = type;
            size++;
        } else {
            int[] tempArray = new int[length + 1];
            for (int i = 0; i < array.length; i++) {
                tempArray[i] = array[i];
            }
            tempArray[length] = type;
            length++;
            size++;
            array = tempArray;
        }
        return true;
    }

    //删除对象储存的数据
    public int[] remove(int index) {
        if (index < size) {
            int[] tempArray = new int[length - 1];
            for (int i = 0; i < index; i++) {
                tempArray[i] = array[i];
            }
            for (int i = index; i < tempArray.length; i++) {
                tempArray[i] = array[i + 1];
            }
            length--;
            size--;
            array = tempArray;
        } else {
            System.out.println("索引越界");
        }
        return array;
    }

    public int[] getArray() {
        return array;
    }


    //get方法，调用该方法，返回该对象存储的数据类型的值。这里的对象是数组形式存在，储存的是int型的值。
    public int get(int index) throws Exception {
        if (index >= size) {
//            System.out.println("索引越界");
            throw new Exception("索引越界");
        }
        return array[index];
    }


    //得到size的大小
    public int size() {
        return size;
    }

    @Override
    public String toString() {
        final StringBuffer sb = new StringBuffer("MyArrayList{");
        sb.append("size=").append(size);
        sb.append(", array=");
        if (array == null) sb.append("null");
        else {
            sb.append('[');
            for (int i = 0; i < array.length; ++i)
                sb.append(i == 0 ? "" : ", ").append(array[i]);
            sb.append(']');
        }
        sb.append(", length=").append(length);
        sb.append('}');
        return sb.toString();
    }
}
